/*  $Id: fiscal.ch,v 1.2 2009/02/10 20:51:00 riztan Exp $ */
/*
 * Constantes para manejo de protocolo fiscal.
 * compatible con:
 * HASAR
 * Samsung Bixolon
 * Aclas
 *
 * (c)2009 Riztan Gutierrez
 */

#include "fiscal.ch"

Function FIS_StrXOR( cCadena, cFinal )
   Local i, cRes
   
   If Empty(cCadena) .OR. cCadena == NIL
      Return NIL
   EndIf
   
   If Len(cCadena)>1
  
      For i:=2 to Len(cCadena)
   
         If Empty(cRes)
            cRes:= StrToHex( CharXOR( SubStr(cCadena, 1, 1), SubStr(cCadena, i, 1) ) )
         Else
            cRes:= StrToHex( CharXOR( HexToStr(cRes), SubStr(cCadena, i, 1) ) )
         EndIf
   
      Next i

   Else
      cRes:= StrToHex( cCadena )

   EndIf

   If !Empty( cFinal )
      cRes:= StrToHex( CharXOR( HexToStr( cRes ) , HexToStr( cFinal ) ) )
   EndIf
   
Return cRes


Function FIS_ErrStr( nErrorCode )

   If nErrorCode = ACK
      Return "OK"
   EndIf
   
   If nErrorCode = NAK
      Return "LRC No Corresponde, o no pudo realizarse la accion."
   EndIf

Return Str( nErrorCode )



Function FIS_SendCmd( nPort, cCommand )

   Local nErrorCode
   
   If Empty( nPort ) .OR. Empty( cCommand )
      Return -1
   Endif
   
   nErrorCode := tp_send( nPort, LRC( cCommand ) )
   tp_inkey( 1 )

Return nErrorCode



